<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Windows Mobile FAQ</title>
    <link rel="stylesheet" href="gettingStarted.css" type="text/css" />
    <meta name="generator" content="DocBook XSL Stylesheets V1.73.2" />
    <link rel="start" href="index.html" title="Berkeley DB Installation and Build Guide" />
    <link rel="up" href="build_wince.html" title="Chapter 6.  Building Berkeley DB for Windows Mobile" />
    <link rel="prev" href="build_wince_notes.html" title="Windows Mobile notes" />
    <link rel="next" href="build_winec_intro.html" title="Building for Windows Embedded Compact 7" />
  </head>
  <body>
    <div xmlns="" class="navheader">
      <div class="libver">
        <p>Library Version 12.1.6.2</p>
      </div>
      <table width="100%" summary="Navigation header">
        <tr>
          <th colspan="3" align="center">Windows Mobile FAQ</th>
        </tr>
        <tr>
          <td width="20%" align="left"><a accesskey="p" href="build_wince_notes.html">Prev</a> </td>
          <th width="60%" align="center">Chapter 6.  Building Berkeley DB for Windows Mobile </th>
          <td width="20%" align="right"> <a accesskey="n" href="build_winec_intro.html">Next</a></td>
        </tr>
      </table>
      <hr />
    </div>
    <div class="sect1" lang="en" xml:lang="en">
      <div class="titlepage">
        <div>
          <div>
            <h2 class="title" style="clear: both"><a id="build_wince_faq"></a>Windows Mobile FAQ</h2>
          </div>
        </div>
      </div>
      <div class="orderedlist">
        <ol type="1">
          <li><span class="bold"><strong>What if my Windows Mobile device
            does not support SetFilePointer and/or
            SetEndOfFile?</strong></span><p>
                You can manually disable the truncate functionality
                from the build.
            </p><p>
                Do that by opening the
                <code class="filename">db-X.X.X/build_wince/db_config.h</code>
                file, and change the line that reads
            </p><pre class="programlisting">#define HAVE_FTRUCATE 1</pre>
                to read
                <pre class="programlisting">#undef HAVE_FTRUNCATE</pre><p>
                Making this change disables <a href="../api_reference/C/dbcompact.html" class="olink">DB-&gt;compact()</a> for btree
                databases.
            </p></li>
          <li>
            <span class="bold">
              <strong>Why doesn't automatic log archiving work?</strong>
            </span>
            <p>
                The Windows Mobile platform does not have a concept
                of a working directory. This means that the
                <a href="../api_reference/C/logarchive.html#archive_DB_ARCH_REMOVE" class="olink">DB_ARCH_REMOVE</a> and <a href="../api_reference/C/logarchive.html#archive_DB_ARCH_ABS" class="olink">DB_ARCH_ABS</a> flags do not work
                properly within Windows Mobile, because they rely on
                having a working directory.
            </p>
            <p> 
                To work around this issue, you can call log_archive
                with the <a href="../api_reference/C/logarchive.html#archive_DB_ARCH_LOG" class="olink">DB_ARCH_LOG</a> flag, the list of returned file
                handles will not contain absolute paths. Your
                application can take this list of files, construct
                absolute paths, and delete the files.
            </p>
          </li>
          <li>
            <span class="bold">
              <strong>Does Berkeley DB support Windows Mobile?</strong>
            </span>
            <p>
                Yes.
            </p>
            <p>
                Berkeley DB relies on a subset of the Windows API,
                and some standard C library APIs. These are provided
                by Windows CE. Windows Mobile is built "on top" of
                Windows CE.
            </p>
          </li>
          <li>
            <span class="bold">
              <strong>Does Berkeley DB support Windows CE?</strong>
            </span>
            <p>Yes. </p>
            <p>
                Berkeley DB relies on a subset of the Windows API,
                and some standard C library APIs. These are provided
                by Windows CE.
            </p>
          </li>
          <li>
            <span class="bold">
              <strong>Does Berkeley DB support Windows Embedded
                Compact 7?</strong>
            </span>
            <p>Yes. </p>
            <p>
                Starting from release 12.1.6.1, it is possible to build Berkeley DB
                on Windows Embedded Compact 7. Below are tips for the build process:       
            </p>
            <div class="orderedlist">
              <ol type="a">
                <li>
                  <span class="emphasis">
                    <em>Compile error at line 146 in stdlib.h</em>
                  </span>
                  <p>
                        This is a known bug for the Windows Embedded Compact 7 SDK.
                        A workaround is to change the line 146 in stdlib.h to read:
                    </p>
                  <pre class="programlisting">__checkReturn __bcount(_Size) void * __cdecl _alloca(__in size_t 
_Size);</pre>
                </li>
                <li>
                  <span class="emphasis">
                    <em>error LNK2019: unresolved external symbol _localtime_s referenced in function _osLocaltime</em>
                  </span>
                  <p>
                        This link error is caused by the fact that the Windows
                        Embedded Compact 7 runtime used to link Berkeley DB does not
                        provide the localtime_s() function. A workaround is to add
                        </p>
                  <pre class="programlisting">HAVE_LOCALTIME_S=0</pre>
                  <p>
                        to the proprocessor definitions of the db_sql project. This
                        can be done by right clicking the db_sql project, select
                        Properties-&gt;Configuration Properties-&gt;C/C++-&gt;Preprocessor-&gt;Proprocessor Definitions,
                        and append </p>
                  <pre class="programlisting">HAVE_LOCALTIME_S=0</pre>
                  <p>
                        at the end of the list.
                    </p>
                </li>
                <li>
                  <span class="emphasis">
                    <em>error LNK1221: a subsystem can't be inferred and must be defined</em>
                  </span>
                  <p>
                        This link error happens on Visual Studio 2008, because it
                        cannot understand the subsystem configured for Visual
                        Studio 2005. To fix this error, right click the project
                        reporting this link error, select Properties-&gt;Configuration Properties-&gt;
                        Linker-&gt;System-&gt;SubSystem, and change the value to WindowsCE (/SUBSYSTEM:WINDOWSCE).
                    </p>
                </li>
                <li>
                  <span class="emphasis">
                    <em>warning C4996: 'xxx': This function or variable may be unsafe.</em>
                  </span>
                  <p>
                        Used within the Berkeley DB source tree, these functions are actually safe.
                        You can safely ignore these warnings.
                    </p>
                </li>
              </ol>
            </div>
          </li>
          <li>
            <span class="bold">
              <strong>What platforms are the supplied
                sample applications designed for?</strong>
            </span>
            <p>
                The supplied sample applications were developed for
                the Pocket PC 2003 emulator. They are known to work on
                real pocket PC devices and later versions of the
                emulator as well.
            </p>
            <p>
                The supplied applications are not designed to work
                with Smartphone devices. The screen size and input
                mechanisms are not compatible.
            </p>
          </li>
          <li>
            <span class="bold">
              <strong>I see a file mapping error when
                opening a Berkeley DB environment or database. What is
                wrong?</strong>
            </span>
            <p>
                The default behavior of Berkeley DB is to use memory
                mapped files in the environment. Windows Mobile does
                not allow memory mapped files to be created on flash
                storage.
            </p>
            <p>
                There are two workarounds:
            </p>
            <div class="orderedlist">
              <ol type="a">
                <li>
                    Configure the Berkeley DB environment not
                    to use memory mapped files. The options are
                    discussed in detail in <a href="../programmer_reference/env_region.html" class="olink">Shared memory region</a>.
                </li>
                <li>
                    Create the Berkeley DB environment on
                    non-flash storage. It is possible to store
                    database and log files in a different location to
                    using the <a href="../api_reference/C/envadd_data_dir.html" class="olink">DB_ENV-&gt;add_data_dir()</a> and <a href="../api_reference/C/envset_lg_dir.html" class="olink">DB_ENV-&gt;set_lg_dir()</a>
                    APIs.
                </li>
              </ol>
            </div>
          </li>
        </ol>
      </div>
    </div>
    <div class="navfooter">
      <hr />
      <table width="100%" summary="Navigation footer">
        <tr>
          <td width="40%" align="left"><a accesskey="p" href="build_wince_notes.html">Prev</a> </td>
          <td width="20%" align="center">
            <a accesskey="u" href="build_wince.html">Up</a>
          </td>
          <td width="40%" align="right"> <a accesskey="n" href="build_winec_intro.html">Next</a></td>
        </tr>
        <tr>
          <td width="40%" align="left" valign="top">Windows Mobile notes </td>
          <td width="20%" align="center">
            <a accesskey="h" href="index.html">Home</a>
          </td>
          <td width="40%" align="right" valign="top"> Building for Windows
        Embedded Compact 7</td>
        </tr>
      </table>
    </div>
  </body>
</html>
